/********************************************************************
 * PROJECT: FOLIAGE PROJECT.
 * SUPPLIER: FOLIAGE TEAM.
 ********************************************************************
 * FILE: InstanceFactory.java
 * (C) Copyright Foliage Team 2013, All Rights Reserved.
 ********************************************************************/
package org.foliage.common.instance;

/**
 * 对象实例管理器工厂。
 * 
 * @author deathknight0718@gmail.com
 * @version 1.0.0
 */
public class InstanceFactory {

	// ----------------------------------------------------------- ATTRIBUTE

	/** 对象实例管理器。 */
	private static InstanceProvider instanceProvider;

	// ----------------------------------------------------------- METHOD

	/**
	 * 通过指定的反射对象获取对象实例。
	 * 
	 * @param clazz 反射对象。
	 * @return 对象实例。
	 */
	public static <T> T getInstance(Class<T> clazz) {
		return getInstanceProvider().getInstance(clazz);
	}

	/**
	 * 通过指定的反射对象和配置标识获取对象实例。
	 * 
	 * @param clazz 反射对象。
	 * @param bean 配置标识。
	 * @return 对象实例。
	 */
	public static <T> T getInstance(Class<T> clazz, String bean) {
		return getInstanceProvider().getInstance(clazz, bean);
	}

	// ----------------------------------------------------------- GETTER&SETTER

	public static InstanceProvider getInstanceProvider() {
		return instanceProvider;
	}

	public static void setInstanceProvider(InstanceProvider instanceProvider) {
		InstanceFactory.instanceProvider = instanceProvider;
	}

}
